org.eclipse.vtp.framework.util
Class SingletonTracker

java.lang.Object
  extended by org.osgi.util.tracker.ServiceTracker
      extended by org.eclipse.vtp.framework.util.SingletonTracker
All Implemented Interfaces:
SingletonTrackerCustomizer, org.osgi.util.tracker.ServiceTrackerCustomizer
Direct Known Subclasses:
HttpConnectorManager, LogTracker, ProcessEngineManager

public class SingletonTracker
extends org.osgi.util.tracker.ServiceTracker
implements SingletonTrackerCustomizer

A customized ServiceTracker that tracks only the single most desirable instance of a service.

Since:
3.0
Version:
1.0
Author:
Lonnie Pryor

Field Summary
 
Fields inherited from class org.osgi.util.tracker.ServiceTracker
context, filter
 
Constructor Summary
SingletonTracker(org.osgi.framework.BundleContext context, org.osgi.framework.Filter filter, SingletonTrackerCustomizer customizer)
          Creates a new SingletonTracker.
SingletonTracker(org.osgi.framework.BundleContext context, org.osgi.framework.ServiceReference reference, SingletonTrackerCustomizer customizer)
          Creates a new SingletonTracker.
SingletonTracker(org.osgi.framework.BundleContext context, java.lang.String clazz, SingletonTrackerCustomizer customizer)
          Creates a new SingletonTracker.
 
Method Summary
 java.lang.Object addingService(org.osgi.framework.ServiceReference reference)
           
 java.lang.Object changingSelectedService(org.osgi.framework.ServiceReference oldReference, java.lang.Object oldService, org.osgi.framework.ServiceReference newReference)
          Called when another service besides the currently selected singleton is selected as the new singleton.
 java.lang.Object getService()
           
 java.lang.Object getService(org.osgi.framework.ServiceReference ref)
           
 org.osgi.framework.ServiceReference getServiceReference()
           
 org.osgi.framework.ServiceReference[] getServiceReferences()
           
 java.lang.Object[] getServices()
           
 void modifiedService(org.osgi.framework.ServiceReference reference, java.lang.Object service)
           
 void releasedSelectedService(org.osgi.framework.ServiceReference reference, java.lang.Object service)
          Called when the selected service must be released and no replacement is available.
 void removedService(org.osgi.framework.ServiceReference reference, java.lang.Object service)
           
 void selectedServiceModified(org.osgi.framework.ServiceReference reference, java.lang.Object service)
          Called when the properties of the currently selected singleton service have changed.
 java.lang.Object selectingService(org.osgi.framework.ServiceReference reference)
          Called when a service is selected as the singleton.
 int size()
           
protected  void throwableCaught(java.lang.Throwable t)
          Called when a method on the customizer fails to complete normally.
 java.lang.Object waitForService(long timeout)
           
 
Methods inherited from class org.osgi.util.tracker.ServiceTracker
close, getTrackingCount, open, open, remove
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SingletonTracker

public SingletonTracker(org.osgi.framework.BundleContext context,
                        org.osgi.framework.ServiceReference reference,
                        SingletonTrackerCustomizer customizer)
Creates a new SingletonTracker.

Parameters:
context - The context to operate under.
reference - The reference to the service to track.
customizer - The customizer for this tracker or null to use this tracker as the customizer also.

SingletonTracker

public SingletonTracker(org.osgi.framework.BundleContext context,
                        java.lang.String clazz,
                        SingletonTrackerCustomizer customizer)
Creates a new SingletonTracker.

Parameters:
context - The context to operate under.
clazz - The type of service to track.
customizer - The customizer for this tracker or null to use this tracker as the customizer also.

SingletonTracker

public SingletonTracker(org.osgi.framework.BundleContext context,
                        org.osgi.framework.Filter filter,
                        SingletonTrackerCustomizer customizer)
Creates a new SingletonTracker.

Parameters:
context - The context to operate under.
filter - A filter that identifies the services to track.
customizer - The customizer for this tracker or null to use this tracker as the customizer also.
Method Detail

throwableCaught

protected void throwableCaught(java.lang.Throwable t)
Called when a method on the customizer fails to complete normally. By default the stack trace is printed and the throwable is ignored.

Parameters:
t - The throwable that was caught.

getServiceReference

public org.osgi.framework.ServiceReference getServiceReference()
Overrides:
getServiceReference in class org.osgi.util.tracker.ServiceTracker

getService

public java.lang.Object getService()
Overrides:
getService in class org.osgi.util.tracker.ServiceTracker

getServiceReferences

public org.osgi.framework.ServiceReference[] getServiceReferences()
Overrides:
getServiceReferences in class org.osgi.util.tracker.ServiceTracker

getService

public java.lang.Object getService(org.osgi.framework.ServiceReference ref)
Overrides:
getService in class org.osgi.util.tracker.ServiceTracker

getServices

public java.lang.Object[] getServices()
Overrides:
getServices in class org.osgi.util.tracker.ServiceTracker

size

public int size()
Overrides:
size in class org.osgi.util.tracker.ServiceTracker

waitForService

public java.lang.Object waitForService(long timeout)
                                throws java.lang.InterruptedException
Overrides:
waitForService in class org.osgi.util.tracker.ServiceTracker
Throws:
java.lang.InterruptedException

addingService

public final java.lang.Object addingService(org.osgi.framework.ServiceReference reference)
Specified by:
addingService in interface org.osgi.util.tracker.ServiceTrackerCustomizer
Overrides:
addingService in class org.osgi.util.tracker.ServiceTracker

modifiedService

public final void modifiedService(org.osgi.framework.ServiceReference reference,
                                  java.lang.Object service)
Specified by:
modifiedService in interface org.osgi.util.tracker.ServiceTrackerCustomizer
Overrides:
modifiedService in class org.osgi.util.tracker.ServiceTracker

removedService

public final void removedService(org.osgi.framework.ServiceReference reference,
                                 java.lang.Object service)
Specified by:
removedService in interface org.osgi.util.tracker.ServiceTrackerCustomizer
Overrides:
removedService in class org.osgi.util.tracker.ServiceTracker

selectingService

public java.lang.Object selectingService(org.osgi.framework.ServiceReference reference)
Description copied from interface: SingletonTrackerCustomizer
Called when a service is selected as the singleton.

Specified by:
selectingService in interface SingletonTrackerCustomizer
Parameters:
reference - The selected singleton service reference.
Returns:
The singleton service object or null if the specified reference should not be selected.

changingSelectedService

public java.lang.Object changingSelectedService(org.osgi.framework.ServiceReference oldReference,
                                                java.lang.Object oldService,
                                                org.osgi.framework.ServiceReference newReference)
Description copied from interface: SingletonTrackerCustomizer
Called when another service besides the currently selected singleton is selected as the new singleton. Implementations must release the old singleton if the new singleton is accepted.

Specified by:
changingSelectedService in interface SingletonTrackerCustomizer
Parameters:
oldReference - The currently selected singleton service reference.
oldService - The currently selected singleton service object.
newReference - The newly selected singleton service reference.
Returns:
The new singleton service object or null if the new reference should not be selected and the old reference should be maintained.

selectedServiceModified

public void selectedServiceModified(org.osgi.framework.ServiceReference reference,
                                    java.lang.Object service)
Description copied from interface: SingletonTrackerCustomizer
Called when the properties of the currently selected singleton service have changed.

Specified by:
selectedServiceModified in interface SingletonTrackerCustomizer
Parameters:
reference - The currently selected singleton service reference.
service - The currently selected singleton service object.

releasedSelectedService

public void releasedSelectedService(org.osgi.framework.ServiceReference reference,
                                    java.lang.Object service)
Description copied from interface: SingletonTrackerCustomizer
Called when the selected service must be released and no replacement is available.

Specified by:
releasedSelectedService in interface SingletonTrackerCustomizer
Parameters:
reference - The currently selected singleton service reference.
service - The currently selected singleton service object.